\documentclass[a4paper,10pt]{article}
\usepackage{fullpage}
\usepackage[british]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
%\usepackage{amsthm} \newtheorem{theorem}{Theorem}
\usepackage{color}
\usepackage{float}

\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}

\usepackage{alltt}
\usepackage{listings}
 \usepackage{aeguill}
\usepackage{dsfont}
%\usepackage{algorithm}
\usepackage[noend]{algorithm2e}
%\usepackage{algorithmicx}
\usepackage{subfig}
\lstset{% parameters for all code listings
language=Python,
frame=single,
basicstyle=\small, % nothing smaller than \footnotesize, please
tabsize=2,
numbers=left,
% framexleftmargin=2em, % extend frame to include line numbers
%xrightmargin=2em, % extra space to fit 79 characters
breaklines=true,
breakatwhitespace=true,
prebreak={/},
captionpos=b,
columns=fullflexible,
escapeinside={\#*}{\^^M}
}


% Alter some LaTeX defaults for better treatment of figures:
    % See p.105 of "TeX Unbound" for suggested values.
    % See pp. 199-200 of Lamport's "LaTeX" book for details.
    % General parameters, for ALL pages:
    \renewcommand{\topfraction}{0.9}	% max fraction of floats at top
    \renewcommand{\bottomfraction}{0.8}	% max fraction of floats at bottom
    % Parameters for TEXT pages (not float pages):
    \setcounter{topnumber}{2}
    \setcounter{bottomnumber}{2}
    \setcounter{totalnumber}{4} % 2 may work better
    \setcounter{dbltopnumber}{2} % for 2-column pages
    \renewcommand{\dbltopfraction}{0.9}	% fit big float above 2-col. text
    \renewcommand{\textfraction}{0.07}	% allow minimal text w. figs
    % Parameters for FLOAT pages (not text pages):
    \renewcommand{\floatpagefraction}{0.7}	% require fuller float pages
% N.B.: floatpagefraction MUST be less than topfraction !!
    \renewcommand{\dblfloatpagefraction}{0.7}	% require fuller float pages

% remember to use [htp] or [htpb] for placement


\usepackage{fancyvrb}
%\DefineVerbatimEnvironment{code}{Verbatim}{fontsize=\small}
%\DefineVerbatimEnvironment{example}{Verbatim}{fontsize=\small}

\newcommand{\keywords}[1]{\par\addvspace\baselineskip
\noindent\keywordname\enspace\ignorespaces#1}


\usepackage{tikz} \usetikzlibrary{trees}
\usepackage{hyperref} % should always be the last package

% useful colours (use sparingly!):
\newcommand{\blue}[1]{{\color{blue}#1}}
\newcommand{\green}[1]{{\color{green}#1}}
\newcommand{\red}[1]{{\color{red}#1}}

% useful wrappers for algorithmic/Python notation:
\newcommand{\length}[1]{\text{len}(#1)}
\newcommand{\twodots}{\mathinner{\ldotp\ldotp}} % taken from clrscode3e.sty
\newcommand{\Oh}[1]{\mathcal{O}\left(#1\right)}

% useful (wrappers for) math symbols:
\newcommand{\Cardinality}[1]{\left\lvert#1\right\rvert}
%\newcommand{\Cardinality}[1]{\##1}
\newcommand{\Ceiling}[1]{\left\lceil#1\right\rceil}
\newcommand{\Floor}[1]{\left\lfloor#1\right\rfloor}
\newcommand{\Iff}{\Leftrightarrow}
\newcommand{\Implies}{\Rightarrow}
\newcommand{\Intersect}{\cap}
\newcommand{\Sequence}[1]{\left[#1\right]}
\newcommand{\Set}[1]{\left\{#1\right\}}
\newcommand{\SetComp}[2]{\Set{#1\SuchThat#2}}
\newcommand{\SuchThat}{\mid}
\newcommand{\Tuple}[1]{\langle#1\rangle}
\newcommand{\Union}{\cup}
\usetikzlibrary{positioning,shapes,shadows,arrows}

\usepackage{url}


\pagestyle{empty}

\title{Distributed Systems - Spring 2013 \\ Milestone 1 Report}

\author{Group 2}

\begin{document}

\maketitle

\section{Work done}

During the first Milestone we got the project up and running. Because of the time difference between Sweden and China there were difficulties finding a time slot where all group members could participate. The solution for this meeting was to have a face-to-face meeting at Polacksbacken with the group members in Uppsala, Sweden, were initial ideas were drafted. These ideas were then discussed in a shorter meeting via Skype with group members from both Sweden and China.

\subsection{Kick-off meeting}

The first meeting was held April 18\textsuperscript{th} at Polacksbacken in Uppsala, Sweden. Participants were Björn Forsberg, Kristian Ionescu, Robert Warborn, Sava Gerov and Staffan Reinius. The decisions were seen as preliminary until they had been discussed with Kenza Lahlou during a shorter meeting via Skype on April 19\textsuperscript{th}.

The following decisions were made:

\begin{enumerate}

	\item \textbf{Communication.} The group decided that all communication will be done via Skype.

	\item \textbf{Methodology.} The group decided that we will use a Agile methodology for the project. The project will be divided into weekly sprints where a set of requirements is implemented. Each sprint should end with a deliverable product, including a report on work done and documentation of the product.

	\item \textbf{Group leader.} The group decided to elect Staffan Reinius as group leader. The main responsibility of the group leader is to handle the communication with the project mentors.

	\item \textbf{Requirements.} The group has written a short requirement specification. The requirement specification will be expanded and refined during Milestone 2. The current requirement specification is presented as an appendix to this report.

	\item \textbf{Operating system.} The group decided to investigate BrickOS (C/C++) and LeJOS (Java) as potential robot operating systems. The operating system that offers the best libraries while leaving a small memory and CPU footprint will be used. During the  meeting the group was leaning a little in the favor of Java and LeJOS.

	\item \textbf{IDE.} The group decided to not force group members to use any specific IDE during development.

	\item \textbf{Foundation.} The group decided to investigate previous projects related to BrickOS/LeJOS to see if any previous code can be used as foundation for the project. This will allow the group to focus on implementing the functionality as required by the requirement specification instead of spending time on low level functionality.

	\item \textbf{Server.} The group decided to use the Raspberry Pi as a server. The Raspberry Pi is a small credit card sized ARM-based Linux computer. The long term goal is to add Wireless LAN capability and power it using batteries. This way the server and robot can be combined into one unit.
	
	\item \textbf{Calculations.} The group decided that all calculations shall be done on the server.

\end{enumerate}

\subsection{Requirement specification}

Appendix A contains the requirements specification.

\section{Timesheets}

\[
\begin{tabular}{l | l}
Person & Time spent \\
\hline
Björn Forsberg & 11 hours \\
Kenza Lahlou & ?? \\
Kristian Ionescu & ?? \\
Robert Warborn & ?? \\
Sava Gerov & ?? \\
Staffan Reinius & ??
\end{tabular}
\]

\section{Work to be done}

After the meeting today we made a list of tasks that have to be completed by next friday;

\begin{enumerate}
	\item \textbf{Operating system.} Select which of BrickOS and LeJOS we want to use (C/C++ vs. Java) and look up pro/cons of each. Extra important is how memory and cpu intense they are, how good the libraries and documentations are, and how well the group members know the programming languages.

	\textbf{Time estimate:} 8 hours for 2 persons.

	\item \textbf{Requirement specification.} Expand the requirement specification for the system. The requirements will be written in an abstract form and refined during the next few sprints.

	\textbf{Time estimate:} 2 hour for 2 persons

	\item \textbf{Robot description.} Come up with and document a physical description of a robot that will fulfil the requirement specification. The requirement specification should be refined to match the robot description.

	\textbf{Time estimate:} 8 hour for 3 persons

	\item \textbf{Modelling.} Specify the API between server-robot and which calculations are done in which device. The specification shall be technology independent and specify which calculations are done in what subsystem (robot, server, client).

	\textbf{Time estimate:} 8 hour for 3 persons

	\item \textbf{Implementation time plan.} Construct a implementation time plan for the project.
	
	\textbf{Time estimate:} 2 hours for 2 person

	\item \textbf{Documentation.} The report and the documentation needs to be updated every week to ensure that each sprint ends with a fully documented deliverable product.

	\textbf{Time estimate:} 3 hours for 1 person

\end{enumerate}

\subsection{Workflow}

The future work will be divided into the above groups. The following groups will perform the work within the following timeframes.

\begin{itemize}
	\item \textbf{Operating system} 
	
	Group members: Robert Warborn, Kristian Ionescu, Staffan/Björn
	
	Deadline: Monday
	
	\item \textbf{Requirement specification}
	
	Group members: Sava Gerov, Kenza Lahlou, Staffan/Björn
	
	Deadline: Monday
	
	\item \textbf{Robot description}
	
	Group members: Robert Warborn, Kristian Ionescu, Staffan Reinius
	
	Deadline: Thursday
	
	\item \textbf{Modelling}
	
	Group members: Kenza Lahlou, Sava Gerov, Björn Forsberg
	
	Deadline: Thursday
	
	\item \textbf{Documenentation}
	
	Group members: TBD
	
	Deadline: TBD
	
	\item \textbf{Report}
	
	Group members: TBD
	
	Deadline: TBD
\end{itemize}

\newpage

\appendix

\section{Requirements}

\subsection{Dictionary}
\begin{itemize}
	\item Environment: The environment in which the robot is located (table, room, ...).
	\item Current position: The current position of the robot.
	\item Bad position: Positions that will put the robot in an unsafe state (fall over edges, crash into walls), or positions where objects blocking the path.
	\item Safe path: A path through the environment free of known \emph{bad positions}.
	\item Goal position: The end point of a \emph{safe path}.
	\item Mapped position: A position the robot has visited before.
\end{itemize}

\subsection{Requirement specification}

\begin{itemize}
	\item The server \emph{should} accept commands from a webpage (client).

	\item The robot \emph{must} be able to approximate its \emph{current position}.

	\item The robot and server \emph{must} be able to communicate \emph{current position}, and a \emph{safe path} to the \emph{goal position}.

	\item The robot \emph{must} be able to move on a reasonably flat area, without entering \emph{bad positions}.


	\item The robot \emph{must} be able to build a map of the environment. It \emph{should} remember where \emph{bad positions} are located.

	\item The robot \emph{should} return to a safe state if communication between robot and server is lost.

	\item The robot or the server \emph{should} be able to calculate and move the robot along a \emph{safe path} through the \emph{environment} to a specified \emph{mapped position}.

	\item The robot \emph{should} update the map when new \emph{bad positions} are discovered.

	\item The robot or server \emph{must} calculate a new safe path if the previous \emph{safe path} is blocked by \emph{bad positions}.
	
	\item The robot \emph{must} be able to communicate and work together with the robot of another group.

\end{itemize}

\end{document}